No Triton, a unidade fundamental de execução muda da thread escalar do CUDA para a Instância de Programa. Isso representa uma abstração de um bloco de threads da GPU, onde uma única instância processa simultaneamente um bloco vetorizado de elementos.
1. A Identidade da Instância de Programa
Cada unidade de execução obtém sua identidade por meio de pid = tl.program_id(eixo=0). Pense em um Empilhadeira de Armazém (a Instância de Programa) pegando um Palet (o Bloco) de 128 caixas, comparado a um único trabalhador (thread do CUDA) pegando apenas uma caixa.
2. Triton vs. Tensores do PyTorch
Compreender a lacuna semântica é essencial para a gestão de memória:
- Tensor do PyTorch: Um objeto Python do lado do host que envolve armazenamento em VRAM, passos (strides) e metadados.
- Tensor do Triton: Um objeto de nível de compilador que representa valores ou ponteiros residentes em registradores ou SRAM.
Objeto Python apontando para memória global contígua.
Um bloco 2D/1D de dados dentro dos registradores do compilador.
3. Natureza SPMD
O Triton segue um Programa Único, Múltiplos Dados (SPMD) fluxo. Cada instância de programa executa o mesmo código exato código. A divergência ocorre apenas quando a lógica utiliza o pid para calcular deslocamentos específicos na memória.